mir: handle new MirCloseSurfaceEvent
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Fri, 5 Dec 2014 14:53:03 +0000 (15:53 +0100)
committerWilliam Hua <william@attente.ca>
Thu, 5 Feb 2015 16:26:18 +0000 (17:26 +0100)
gdk/mir/gdkmir-debug.c
gdk/mir/gdkmireventsource.c

index ef57eff9734f3165b631344f0bb4a08038858cfb..4dd3eceea777785ee7ff7f05be1630c94223018e 100644 (file)
@@ -269,6 +269,13 @@ _gdk_mir_print_resize_event (const MirResizeEvent *event)
   g_printerr (" Size (%i, %i)\n", event->width, event->height);
 }
 
+void
+_gdk_mir_print_close_event (const MirCloseSurfaceEvent *event)
+{
+  g_printerr ("CLOSED\n");
+  g_printerr (" Surface %i\n", event->surface_id);
+}
+
 void
 _gdk_mir_print_event (const MirEvent *event)
 {
@@ -286,6 +293,9 @@ _gdk_mir_print_event (const MirEvent *event)
     case mir_event_type_resize:
       _gdk_mir_print_resize_event (&event->resize);
       break;
+    case mir_event_type_close_surface:
+      _gdk_mir_print_close_event (&event->close_surface);
+      break;
     default:
       g_printerr ("EVENT %u\n", event->type);
       break;
index 68b04308e2f0ba53eaa032448659ee5fb9c7a45c..caa07b1a5e12c396605c051ef09cc3f16c7d3abb 100644 (file)
@@ -391,6 +391,14 @@ handle_resize_event (GdkWindow            *window,
   generate_configure_event (window, event->width, event->height);
 }
 
+static void
+handle_close_event (GdkWindow                  *window,
+                    const MirCloseSurfaceEvent *event)
+{
+  send_event (window, get_pointer (window), gdk_event_new (GDK_DESTROY));
+  gdk_window_destroy_notify (window);
+}
+
 typedef struct
 {
   GdkWindow *window;
@@ -423,6 +431,9 @@ gdk_mir_event_source_queue_event (GdkDisplay     *display,
     case mir_event_type_orientation:
       // FIXME?
       break;
+    case mir_event_type_close_surface:
+      handle_close_event (window, &event->close_surface);
+      break;
     default:
       g_warning ("Ignoring unknown Mir event %d", event->type);
       // FIXME?